

// subpkg/phone-login/phone-login.js
Page({

    /**
     * 页面的初始数据
     */
    data: { //和vue中data一样，用于保存数据
        phone:'17704051019',
        vcode:'',
        count:10,//倒计时
        tip:'获取验证码',
        isCountDown:false,//是否正在倒计时中
        timer:-1,//定时器id
    },

    changeValue(e) {
        this.setData({
            [e.target.dataset.name] : e.detail.value, //将input接听到的数据名和值保存在setDate变量中
        })
    },

    async getVcode() {
        const { phone } = this.data; //ES6解构赋值，将data中的phone赋值给phone
        const reg = /^1[3-9][0-9]{9}$/;
        if (!reg.test(phone)) { //判断输入的手机号是否符合正则表达式
            wx.showToast({  //提示框
              title: '手机号不合法',
              icon:'error'
            });
            return
        };
        //开启倒计时
        if (this.data.isCountDown) {return};//如果有在倒计时就结束这一次的倒计时
        this.setData({ //显示倒计时总秒数， 将倒计时判断改为true
            isCountDown:true,
            tip:this.data.count
        });
        this.data.timer = setInterval(()=>{
            if (this.data.count<=1) {
                clearInterval(this.data.timer);
                this.data.count = 10;
                this.setData({  //结束后将原有data中的数据复原
                    isCountDown:false,
                    tip:'获取验证码'
                });
                return 
            }
            //未结束的状态
            this.data.count--;
            this.setData({
                tip:this.data.count
            })
        },1000);
        const res = await wx.$request({
            url:'user/vcode',
            data:{phone},//上面已声明了phone变量，所以这里直接使用即可
        })
        if (res.status!=0) return;
        this.setData({ //将接口获取到的值直接赋值到页面上
            vcode:res.vcode
        })
    },

    //立即验证
    async phoneLogin (){
        const {phone,vcode} = this.data;
        if (`${phone}`.trim().length===0) { //验证是否输入手机号
            wx.showToast({
              title: '请输入手机号',
              icon:'none'
            })
            return
        }
        if (`${vcode}`.trim().length===0) { //验证是否输入验证码
            wx.showToast({
              title: '请输入验证码',
              icon:'none'
            })
            return
        }
        const res = await wx.$request({
            url:'user/login',
            method:"POST",
            data:{
                phone,
                vcode
            }
        })
        if (res.status ===0 ) {
            wx.setStorageSync('token', res.token);//保存token
            wx.showToast({
              title: res.message,
              duration:1000,
              success:()=>{
                  setTimeout(() => {
                      wx.reLaunch({ //跳转到首页
                        url: '/pages/home/home',
                      })
                  }, 1000);
              }
            })
        }else {
            wx.showToast({
              title: res.message,
              icon:'error'
            })
        }
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {
        console.log('--------phone-login---onUnload');
        clearInterval(this.data.timer)
    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})